package com.itheima.d2_inner_class2;


/**
 * 什么是静态内部类？
 * 有static修饰的内部类，属于外部类自己持有。
 *
 * 创建对象的格式：
 * 外部类名.内部类名 对象名 = new 外部类.内部类(…);
 * Outer.Inner in =  new Outer.Inner();
 *
 * 静态内部类中访问外部类成员的特点:
 * 可以直接访问外部类的静态成员，不可以直接访问外部类的实例成员。
 */
public class Outer {
    private int age = 99;
    public static String schoolName;
    // 静态内部类
    public static class Inner{
        private String name;
        public static int a;

        public Inner() {
        }

        private int age = 88;

        public void test(){
            System.out.println(schoolName);  //可以直接访问外部类的静态成员
            System.out.println(age);  // 88

            //可以直接访问外部类的静态成员，不可以直接访问外部类的实例成员。和静态方法时类似的
            //System.out.println(Outer.this.age);  报错

        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }

    /*
    静态内部类好比静态方法
    在静态方法中不能访问实例成员变量，因为这是对象的成员变量。但是可以访问静态成员变量。
     */
    public static void test2(){
        System.out.println(schoolName);
        // System.out.println(age);
    }
}
